package _250404;

public class Testv0405 {
    int[] dx={0,0,1,-1}; 
    int[] dy={1,-1,0,0};
    int m,n;
    int count;
    boolean[][] b;
    public int numIslands(char[][] grid) {
        m=grid.length;
        n=grid[0].length;
        b=new boolean[m][n];
        for(int i=0;i<m;i++) {
        	for(int j=0;j<n;j++) {
        		if(grid[i][j]=='1'&&b[i][j]==false) {
        			count++;
        			b[i][j]=true;
        			dfs(grid,i,j);
        			
        		}
        	}
        }
        return count;
    }
    
    public void dfs(char[][] grid,int i,int j) {
    	for(int k=0;k<4;k++) {
    		int x=i+dx[k];int y=j+dy[k];
    		if(x>=0&&x<m&&y>=0&&y<n&&b[x][y]==false&&grid[x][y]=='1') {
    			b[x][y]=true;
    			dfs(grid,x,y);
    		}
    	}
    }
}
